package com.sheng.leetcode.year2022.month12.day23;

import org.junit.Test;

/**
 * @author liusheng
 * @date 2022/12/23
 * <p>
 * 2011. 执行操作后的变量值<p>
 * <p>
 * 存在一种仅支持 4 种操作和 1 个变量 X 的编程语言：<p>
 * ++X 和 X++ 使变量 X 的值 加 1<p>
 * --X 和 X-- 使变量 X 的值 减 1<p>
 * 最初，X 的值是 0<p>
 * 给你一个字符串数组 operations ，这是由操作组成的一个列表，返回执行所有操作后， X 的 最终值 。<p>
 * <p>
 * 示例 1：<p>
 * 输入：operations = ["--X","X++","X++"]<p>
 * 输出：1<p>
 * 解释：操作按下述步骤执行：<p>
 * 最初，X = 0<p>
 * --X：X 减 1 ，X =  0 - 1 = -1<p>
 * X++：X 加 1 ，X = -1 + 1 =  0<p>
 * X++：X 加 1 ，X =  0 + 1 =  1<p>
 * <p>
 * 示例 2：<p>
 * 输入：operations = ["++X","++X","X++"]<p>
 * 输出：3<p>
 * 解释：操作按下述步骤执行：<p>
 * 最初，X = 0<p>
 * ++X：X 加 1 ，X = 0 + 1 = 1<p>
 * ++X：X 加 1 ，X = 1 + 1 = 2<p>
 * X++：X 加 1 ，X = 2 + 1 = 3<p>
 * <p>
 * 示例 3：<p>
 * 输入：operations = ["X++","++X","--X","X--"]<p>
 * 输出：0<p>
 * 解释：操作按下述步骤执行：<p>
 * 最初，X = 0<p>
 * X++：X 加 1 ，X = 0 + 1 = 1<p>
 * ++X：X 加 1 ，X = 1 + 1 = 2<p>
 * --X：X 减 1 ，X = 2 - 1 = 1<p>
 * X--：X 减 1 ，X = 1 - 1 = 0<p>
 * <p>
 * 提示：<p>
 * 1 <= operations.length <= 100<p>
 * operations[i] 将会是 "++X"、"X++"、"--X" 或 "X--"<p>
 * <p>
 * 来源：力扣（LeetCode）<p>
 * 链接：<a href="https://leetcode.cn/problems/final-value-of-variable-after-performing-operations">2011. 执行操作后的变量值</a><p>
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。<p>
 */
public class LeetCode2011 {

    @Test
    public void test01() {
//        String[] operations = {"--X", "X++", "X++"};
//        String[] operations = {"++X", "++X", "X++"};
        String[] operations = {"X++", "++X", "--X", "X--"};
        System.out.println(new Solution().finalValueAfterOperations(operations));
    }
}

class Solution {

    String[] operation = {"++X", "X++", "--X", "X--"};

    public int finalValueAfterOperations(String[] operations) {
        int X = 0;
        for (String s : operations) {
            if (s.equals(operation[0]) || s.equals(operation[1])) {
                X += 1;
            } else {
                X -= 1;
            }
        }
        return X;
    }
}
